package com.tools;

import com.util.mail.MyAuthenticator;

import javax.mail.*;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Calendar;
import java.util.Properties;

public class SendMail {
    @SuppressWarnings("static-access")
    public static void sendMessage(String smtpHost, String from,
                                   String fromUserPassword, String to, String subject,
                                   String messageText, String messageType) throws MessagingException {
        // 第一步：配置javax.mail.Session对象
        System.out.println("为" + smtpHost + "配置mail session对象");

        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.starttls.enable", "true");// 使用 STARTTLS安全连接
        // props.put("mail.smtp.port", "25"); //google使用465或587端口
        props.put("mail.smtp.auth", "true"); // 使用验证
        // props.put("mail.debug", "true");
        Session mailSession = Session.getInstance(props, new MyAuthenticator(
                from, fromUserPassword));

        // 第二步：编写消息
        System.out.println("编写消息from——to:" + from + "——" + to);

        InternetAddress fromAddress = new InternetAddress(from);
        InternetAddress toAddress = new InternetAddress(to);

        MimeMessage message = new MimeMessage(mailSession);

        message.setFrom(fromAddress);
        message.addRecipient(RecipientType.TO, toAddress);

        message.setSentDate(Calendar.getInstance().getTime());
        message.setSubject(subject);
        message.setContent(messageText, messageType);

        // 第三步：发送消息
        Transport transport = mailSession.getTransport("smtp");
        transport.connect(smtpHost, "chaofeng19861126", fromUserPassword);
        transport.send(message, message.getRecipients(RecipientType.TO));
        System.out.println("message yes");
    }

    public static void main(String[] args) {
        try {
            SendMail.sendMessage("smtp.gmail.com", "karemjohn@gmail.com",
                    "************", "karemjohn@gmail.com", "nihao",
                    "---------------wrwe-----------",
                    "text/html;charset=gb2312");
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}